====================本系列文章沒有什麼高深的理論====================
====================純粹是以一個菜雞的視角來分享====================
前面說到了 AND &&
跟 OR ||
分別代表了「且」跟「或」的意思,但是為什麼前面範例的結果不是 true
跟 false
呢?
const cat = 456;
const dog = "dog";
const bear = null;
console.log(cat && dog); // "dog"
console.log(bear && cat); // null
console.log(cat || dog); // 456
console.log(bear || dog); // "dog"
console.log(bear || cat); // 456
簡單來說透過 &&
或是 \\
所產生的值不一定會是布林值 (Boolean),而是兩者的其中之一。
&&
跟 ||
運算子在判斷時,會先以「左邊」的數值開始進行:
布林類型(Boolean)
就會再做後續的判斷。
ToBoolean
判斷是「falsy」或是「truthy」才轉換成對應的 true
或是 false
。
||
運算子來講,假如第一個數值轉換為 true
,那麼就會回傳第一個數值,否則會回傳第二個數值。
&&
運算子來講,假如第一個數值轉換為 true
,那麼就會回傳第二個數值,否則會回傳第一個數值。
在 if
的條件判斷中,JavaScript 會針對回傳的數值,再度做一次 ToBoolean
的判斷是否為「falsy」或「truthy」,這也是為什麼在 if 判斷式
中,可以使用 &&
跟 ||
的原因了,只是平常都會搭配 if 判斷式
使用,所以也會讓人誤以為 &&
跟 ||
只會回傳 true
跟 false
的結果。
今日的分享就到這囉,我們明天見,掰掰!